地图手势事件监听 Sample详情
最后更新时间:2019年6月17日
当对地图进行单击、双击、长按、触摸操作时,MapView地图控件会监听到手势事件,捕捉到相应的触摸点并响应,提供监听事件:单击监听、双击监听、长按监听、触摸监听,在回调方法中返回坐标信息供用户使用。
这四种手势事件在实际中应用的非常多,多用于交互操作。例如,在地图上交互式绘制图形、交互式查询要素、交互式编辑要素等。常见的用法为:为地图视图注册单击事件监听器,在回调方法中获取坐标信息,然后以此绘制点/标注/图片/文字等,多次点击之后,可将获取到的多个点连成线或者区,达到用户的交互式绘制效果。
监听用户对地图进行的单击手势事件,返回单击点的坐标信息。
//实例化单击事件监听器 MapViewTapListener mapViewTap_Listener=new MapViewTapListener() { @Override public void mapViewTap(PointF pointf) { Dot point = mapView.viewPointToMapPoint(pointf); //视图坐标转换为地图坐标 } }; //为地图视图对象设置触摸监听器 mapView.setTapListener(mapViewTap_Listener);
代码说明:回调函数中的坐标点的坐标系是视图坐标系,如果需要获取地图坐标,需调用MapView类的viewPointToMapPoint()方法进行转换。
监听用户对地图进行的双击手势事件。
//实例化双击事件监听器 MapViewDoubleTapListener mapViewDoubleTap_Listener=new MapViewDoubleTapListener() { @Override public boolean mapViewDoubleTap(PointF pointf) { Dot point = mapView.viewPointToMapPoint(pointf); //视图坐标转换为地图坐标 return false; } }; //为地图视图对象设置触摸监听器 mapView.setDoubleTapListener(mapViewDoubleTap_Listener);
代码说明:地图双击事件监听器的回调函数具有返回值:如果返回true,表示消费了该事件,不会触发地图的单击Tap事件;如果返回false,则表示没有消费该事件,会继续触发地图的单击Tap事件。后续的地图长按事件、触摸事件中回调函数的返回值的作用与此相同。
监听用户对地图进行的长按手势事件。
//实例化长按事件监听器 MapViewLongTapListener mapViewLongTap_Listener=new MapViewLongTapListener() { @Override public boolean mapViewLongTap(PointF pointf) { Dot point = mapView.viewPointToMapPoint(pointf); //视图坐标转换为地图坐标 return false; } }; //为地图视图对象设置触摸监听器 mapView.setLongTapListener(mapViewLongTap_Listener);
监听用户对地图进行的触摸手势事件。
//实例化触摸事件监听器 MapViewTouchListener mapViewTouch_Listener=new MapViewTouchListener() { @Override public boolean mapViewTouch(MotionEvent event) { PointF pointF=new PointF(event.getX(),event.getY()); //构建视图坐标点 Dot dot = mapView.viewPointToMapPoint(pointF); //视图坐标转换为地图坐标 return false; } }; //为地图视图对象设置触摸监听器 mapView.setTouchListener(mapViewTouch_Listener);